/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.agi.ia.kohonen;


import java.awt.Color;
import java.awt.image.BufferedImage;

/**
 *
 * @author renatogrosz
 */
public class RepresentadorDados {
    
    private BufferedImage buf;  
    private Tamanho tamanho;
    
        
    public void createBuf(Tamanho tamanho){
        this.tamanho=tamanho;
        buf=new BufferedImage(tamanho.x,tamanho.y,BufferedImage.TYPE_BYTE_GRAY);
    }
    
    
    public  BufferedImage getBuf(){
        return(buf);        
    }
    
    public void representar(Dados dados){
        int i,j;
        int dot;
        double min,max,size;
        
        double[][] data;

        
        if(buf==null){
            throw new IllegalStateException("Buf nao foi criado");
        }
        
        if(!tamanho.equals(dados.getTamanho())){
            throw new IllegalArgumentException("Os dados nao tem o mesmo tamanho do Buf");
        }
        
        data=dados.getDados();
        
        min=data[0][0];
        max=data[0][0];
        
        
        
        for(i=0;i<tamanho.x;i++){
            for(j=0;j<tamanho.y;j++){
                if(data[i][j]<min){
                    min=data[i][j];
                }
                if(data[i][j]>max){
                    max=data[i][j];
                }                
            }
        }
        
        size=max-min;
        
        
        double fator;
        fator=255/size;
        
        for(i=0;i<tamanho.x;i++){
            for(j=0;j<tamanho.y;j++){
                Color c;
                double doubledot;                
                doubledot=(data[i][j]-min) * fator;
                dot = (int) doubledot;
                dot=255-dot;
                try{
                    c=new Color(dot,dot,dot);
                
                    buf.setRGB(i, j, c.getRGB());                
                }catch(Exception e){
                    e.printStackTrace();
                }
            }
        }                
    }
    
    
}
